// 通用函数
import useClipboard from "vue-clipboard3";
import { ElMessage } from "element-plus";
import { formatDate } from "@/utils/formatTime";
import { useI18n } from "vue-i18n";

export default function () {
  const { t } = useI18n();
  const { toClipboard } = useClipboard();

  // 百分比格式化
  const percentFormat = (row: EmptyArrayType, column: number, cellValue: string) => {
    return cellValue ? `${cellValue}%` : "-";
  };
  // 列表日期时间格式化
  const dateFormatYMD = (row: EmptyArrayType, column: number, cellValue: string) => {
    if (!cellValue) return "-";
    return formatDate(new Date(cellValue), "YYYY-mm-dd");
  };
  // 列表日期时间格式化
  const dateFormatYMDHMS = (row: EmptyArrayType, column: number, cellValue: string) => {
    if (!cellValue) return "-";
    return formatDate(new Date(cellValue), "YYYY-mm-dd HH:MM:SS");
  };
  // 列表日期时间格式化
  const dateFormatHMS = (row: EmptyArrayType, column: number, cellValue: string) => {
    if (!cellValue) return "-";
    let time = 0;
    if (typeof row === "number") time = row;
    if (typeof cellValue === "number") time = cellValue;
    return formatDate(new Date(time * 1000), "HH:MM:SS");
  };
  // 小数格式化
  const scaleFormat = (value: string = "0", scale: number = 4) => {
    return Number.parseFloat(value).toFixed(scale);
  };
  // 小数格式化
  const scale2Format = (value: string = "0") => {
    return Number.parseFloat(value).toFixed(2);
  };
  // 点击复制文本
  const copyText = (text: string) => {
    return new Promise((resolve, reject) => {
      try {
        //复制
        toClipboard(text);
        //下面可以设置复制成功的提示框等操作
        ElMessage.success(t("layout.layout.copyTextSuccess"));
        resolve(text);
      } catch (e) {
        //复制失败
        ElMessage.error(t("layout.layout.copyTextError"));
        reject(e);
      }
    });
  };
  return {
    percentFormat,
    dateFormatYMD,
    dateFormatYMDHMS,
    dateFormatHMS,
    scaleFormat,
    scale2Format,
    copyText
  };
}
